1. Field of the Invention
This invention relates in general to computer-implemented database systems, and, in particular, to recovering an index on an auxiliary table.
2. Description of Related Art
Databases are computerized information storage and retrieval systems. A Relational Database Management System (RDBMS) is a database management system (DBMS) which uses relational techniques for storing and retrieving data. Relational databases are organized into tables which consist of rows and columns of data. The rows are formally called tuples or records. A database will typically have many tables and each table will typically have multiple tuples and multiple columns. Tables are assigned to table spaces. A table space is associated with direct access storage devices (DASD), and, thus, tables, are stored on DASD, such as magnetic or optical disk drives for semi-permanent storage.
A table space can be a system managed space (e.g., an operating system file system) or a database managed space. Each table space is physically divided into equal units called pages. Each page, which may contain, for example, 4K bytes, holds one or more rows of a table and is the unit of input/output (I/O). The rows of a table are physically stored as records on a page. A record is always fully contained within a page and is limited by page size. As users move towards working with image data and other large data objects, storing data in conventional records becomes difficult.
An index is an ordered set of references to the records or rows in a database file or table. The index is used to access each record in the file using a key (i.e., one of the fields of the record or attributes of the row). However, building an index for a large file can take a considerable amount of elapsed time. The process involves scanning all records in the file, extracting a key value and record identifier (rid) value from each of the records, sorting all of the key/rid values, and then building the index from the sorted key/rid values. Typically, the scanning, sorting, and index build steps are performed serially, which can be time consuming in the case of a large database file.
Traditionally, a RDBMS stored simple data, such as numeric and text data. In a traditional RDBMS, the underlying storage management has been optimized for simple data. More specifically, the size of a record is limited by the size of a page, which is a fixed number (e.g., 4K) defined by a computer developer. This restriction in turn poses a limitation on the length of columns of a table. To alleviate such a restriction, most computer developers today support a new built-in data type for storing large objects (LOBs). Large objects, such as image data, typically take up a great deal of storage space.
When a RDBMS stores LOBs, an index may be used to access the LOBs efficiently. However, when computer systems fail, the index could be corrupted or destroyed. In this case, recovery of the index, which involves rebuilding the index, can be very time consuming because each page that was allocated to storing each LOB must be read.
Therefore, there is a need in the art for an improved technique of recovering an index on an auxiliary table.
To overcome the limitations in the prior art described above, and to overcome other limitations that will become apparent upon reading and understanding the present specification, the present invention discloses a method, apparatus, and article of manufacture for a computer implemented index recovery system.
In accordance with the present invention, an auxiliary index is recovered in a database stored on a data storage device connected to a computer. An identifier is maintained in each entry of a space map that identifies a large object to which the page associated with that entry is allocated. An indicator is maintained in the entry of the space map indicating whether the page associated with that entry is the first page allocated to the large object. The identifier and the indicator in each entry of the space map are used to build the auxiliary index for locating each large object.